
int partition(vector<int> &arr, int left, int right, int &rlt, int k)   //改算法递归调用多  无法ac  但是测试了部分数据可以通过
{
	int realleft = left;
	int temp = arr[left];
	while (left < right)
	{
		while (left < right && arr[right] >= temp)
			right--;
		if (left < right)
		{
			arr[left] = arr[right];
			//  left++;
		}
		while (left < right && arr[left] <= temp)  // 这里一定要<=  只是小于是不行的
			left++;
		if (left < right)
		{
			arr[right] = arr[left];
			// right--;
		}

	}
	arr[left] = temp;
	if (left  + 1 == k)  // /   infact it means     index - low    与 k比较    
	{
		rlt = temp;
		return 0;
	}
	if (left  + 1 > k)
	{
		partition(arr, realleft, left - 1, rlt, k);
	}
	else
	{
		partition(arr, left + 1, arr.size() - 1, rlt, k);
	}

	return left;
}
